package com.myplans.client.service;

import java.util.ArrayList;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.myplans.shared.Plan;
import com.myplans.shared.User;

public interface UserServiceAsync {
	
	void signInUser(String email, String password, AsyncCallback<User> callback);

	void signUpUser(User user, AsyncCallback<User> asyncCallback);
	
	void updateUser(User user, AsyncCallback<User> asyncCallback);
	
	void getPlansForUser(User user, AsyncCallback< ArrayList<Plan>> asyncCallback);

	void deletePlanForUser(Plan plan, User user, AsyncCallback<User> asyncCallback);

	void createPlanForUser(Plan plan, User user, AsyncCallback<User> asyncCallback);
	
	void getSubscriptionsForUser(User user, AsyncCallback<ArrayList<User>> asyncCallback);

	void createSubscriptionForUser(User subscription, User user, AsyncCallback<User> asyncCallback);

	void deleteSubscriptionForUser(User subscription, User user, AsyncCallback<User> asyncCallback);
	
	void getFbUser(String authToken, AsyncCallback<User> asyncCallback);
	
	void login(String authToken, AsyncCallback<String> asyncCallback);
	
	void getRecommendedPlansForUser(User user, AsyncCallback<ArrayList<Plan>> asyncCallback);
}
